package com.ruoyi.schedule.service;

import com.ruoyi.schedule.domain.Rule;
import com.ruoyi.schedule.domain.SchedulePlan;
import com.ruoyi.schedule.domain.Shift;
import java.util.List;
import java.util.Map;

/**
 * 排班算法服务接口
 */
public interface IScheduleAlgorithmService {
    /**
     * 生成排班计划
     * @param plan 排班计划
     * @param rules 排班规则列表
     * @param shifts 班次列表
     * @return 排班结果(员工ID -> 班次分配)
     */
    Map<Long, List<Shift>> generateSchedule(SchedulePlan plan, List<Rule> rules, List<Shift> shifts);

    /**
     * 验证排班规则
     * @param rules 排班规则列表
     * @return 验证结果
     */
    boolean validateRules(List<Rule> rules);
}